package com.uwo.house.dao;

import com.uwo.house.beans.request.MeasureCenterReq;
import com.uwo.house.beans.response.MeasureOrderResp;
import com.uwo.house.beans.response.MessageManagerResp;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * Created by PHS on 2017/7/19.
 */
@Repository
public interface MeasureCenterDao {
    /**
     * 测量人员上传测量信息资料
     */
    int addMeasureInfo(MeasureCenterReq measureCenterReq);

    /**
     * 根据 userId 查询奖励列表
     */
    List<MeasureCenterReq> rewardList(String userId);

    /**
     * 测量人员领取奖励
     */
    int reward(MeasureCenterReq measureCenterReq);

    /**
     * 设计师端显示指派的订单
     */
    List<MeasureCenterReq> getMeasureOrderToDesign(@Param("orderId") String orderId, @Param("assignDateFrom") Date assignDateFrom,
                                           @Param("assignDateTo") Date assignDateTo, @Param("orderStatus") Integer orderStatus,
                                           @Param("userId") String userId);
    /**
     * 设计师端显示测量数据详情
     */
    MeasureCenterReq getOrderInfo(String orderId);

    /**
     * 设计师进入上传方案页面  需要查询订单的详细信息
     */
    MeasureCenterReq getOrderSpecialInfo(String orderId);
    /**
     * 项目经理端显示客户确认的订单列表
     */
    List<MeasureCenterReq> getMeasureOrderToProjectManager(@Param("orderId") String orderId,
                                                           @Param("mobile") String mobile,
                                                           @Param("projectStatus") Integer projectStatus);


    /**
     * 项目经理端后期维护订单列表
     */
    List<MessageManagerResp> getToProjectManager(@Param("orderId") String orderId,
                                                 @Param("mobile") String mobile,
                                                 @Param("messageType") Integer messageType,
                                                 @Param("handleStatus") Integer handleStatus);

    /**
     * 项目经理端回复时候显示相关信息
     */
    MeasureCenterReq findMessageInfo(@Param("orderId") String orderId,
                                     @Param("messageId") Integer messageId);

    /**
     * 项目经理端显示回复详情信息
     */
    MeasureCenterReq findMessageDetail(@Param("orderId") String orderId,
                                       @Param("messageId") Integer messageId);


    /**
     * 供应商端后期维护列表
     * @param orderId
     * @param mobile
     * @param messageType
     * @param handleStatus
     * @return
     */
    List<MeasureCenterReq> getToSupplier(@Param("orderId") String orderId,
                                         @Param("mobile") String mobile,
                                         @Param("messageType") Integer messageType,
                                         @Param("handleStatus") Integer handleStatus,
                                         @Param("userId") String userId);

}
